class_name HItemManageAbility
extends HAbility

## 物品管理能力类
## 负责处理背包物品的切换和管理
## 遵循单一职责原则：只管理物品选择，不处理物品使用

var current_item_index: int = 0  # 当前选中的物品索引

## 处理鼠标滑轮输入，切换当前物品
## @param wheel_delta: 滑轮滚动值（1.0向上，-1.0向下）
func handle_wheel_input(wheel_delta: float):
	if wheel_delta == 0.0:
		return
	
	var bag_items = DataManager.bag_data.bag_items_list
	if bag_items.size() == 0:
		return
	
	# 根据滑轮方向切换物品
	if wheel_delta > 0:  # 向上滚动，选择上一个物品
		current_item_index = (current_item_index - 1 + bag_items.size()) % bag_items.size()
	else:  # 向下滚动，选择下一个物品
		current_item_index = (current_item_index + 1) % bag_items.size()
	
	print("切换到物品索引: ", current_item_index, " 物品: ", get_current_item_name())

## 获取当前选中的物品容器
## @return HItemContainer: 当前选中的物品容器，如果没有则返回null
func get_current_item_container() -> HItemContainer:
	var bag_items = DataManager.bag_data.bag_items_list
	if bag_items.size() == 0 or current_item_index >= bag_items.size():
		return null
	
	return bag_items[current_item_index]

## 获取当前选中物品的名称
## @return String: 当前物品名称，如果没有则返回空字符串
func get_current_item_name() -> String:
	var container = get_current_item_container()
	if container:
		return container.item_name
	return ""

## 检查背包是否有物品
## @return bool: 背包是否有物品
func has_items() -> bool:
	return DataManager.bag_data.bag_items_list.size() > 0

## 确保当前索引有效
## 当背包物品发生变化时调用此方法
func validate_current_index():
	var bag_items = DataManager.bag_data.bag_items_list
	if bag_items.size() == 0:
		current_item_index = 0
	elif current_item_index >= bag_items.size():
		current_item_index = bag_items.size() - 1
